perm filename CON748.FAI[CMS,LCS]2 blob
sn#349389 filedate 1978-04-18 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00006 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE CON748
C00003 00003 SETUP INTEL HEX FORMAT
C00005 00004 LOAD: PUSHJ P,INP
C00007 00005 DONE: HRRZI A,72 RECORD MARK
C00009 00006 XORI S,-1 CK SUM HIGH
C00011 ENDMK
C⊗;
TITLE CON748
A←1 ↔B←2↔C←3 ↔D←4 ↔E←5↔X←6↔Y←7
P←17 ↔ NBUFS←4 ↔ S←10 ↔ L←11
PDL: BLOCK 22
IBUF: BLOCK 4
OBUF: BLOCK 4
FILNAM: 'TBOX '
'DMP '
0
0
FIL2: 'ILOAD '
'PTP '
0
0
STAR: MOVE P,[PDPO: IOWD 22,PDL]
OPEN 11,[14↔'DSK '↔IBUF]
JRST 4,.
INBUF 11,NBUFS
LOOKUP 11,FILNAM
JRST 4,.
OPEN [14↔'DSK '↔OBUF,,]
JRST 4,.
OUTBUF NBUFS
ENTER FIL2
JRST 4,.
SETZ L,
PUSHJ P,INP+1
ADDI X,200 ;FLUSH GARBAGE
PUSHJ P,OUTP
; SETUP INTEL HEX FORMAT
WHDR: HRRZI A,72 ;RECORD MARK
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,"8" ;RECORD LENGTH HIGH (8 = 128 BYTES)
HRRZI S,200 ;START CK SUM
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,"0" ;RECORD LENGTH LOW
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,(L) ;LOAD ADDRESS HIGH
LSH A,-14
ANDI A,17
HRRZ A,HEXTBL(A)
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,(L)
LSH A,-10
ADDI S,(A) ;Check sum
ANDI A,17
HRRZ A,HEXTBL(A)
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,(L)
LSH A,-4
ANDI A,17
HRRZ A,HEXTBL(A)
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,(L) ;LOAD ADDRESS LOW
ADDI S,(A) ;Check sum
ANDI A,17
HRRZ A,HEXTBL(A)
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
ADDI L,200
HRRZI A,"0" ;RECORD TYPE HIGH
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,"0" ;RECORD TYPE LOW
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRLI C,-200 ;-200 FOR 128 DATA BYTES
LOAD: PUSHJ P,INP
HRRZ A,1(X)
ADDI S,(A) ;Check sum
LSH A,-4 ;GET HIGH NIBBLE
ANDI A,17
HRRZ A,HEXTBL(A)
HRRZM A,1(Y)
AOBJP Y,OUTZ
LOWNIB: HRRZ A,1(X) ;GET LOW NIBBLE
ANDI A,17
HRRZ A,HEXTBL(A)
HRRZM A,1(Y)
AOBJP Y,OUTIT
ADX: AOBJP C,NXTRCD
AOBJN X,LOAD+1
JRST LOAD
OUTIT: PUSHJ P,OUTP
JRST ADX
OUTZ: PUSHJ P,OUTP
JRST LOWNIB
NXTRCD: XORI S,-1 ;GET CHECK SUM
AOJ S,
HRRZI A,(S)
LSH A,-4
ANDI A,17
HRRZ A,HEXTBL(A)
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
ANDI S,17
HRRZ A,HEXTBL(S)
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
CAIE L,2000 ;2000 FOR 1024 DATA BYTES
JRST WHDR
DONE: HRRZI A,72 ;RECORD MARK
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,"0" ;RECORD LENGTH HIGH
SETZ S, ;Check sum
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,"0" ;RECORD LENGTH LOW
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,(L) ;LOAD ADDRESS HIGH
LSH A,-14
ANDI A,17
HRRZ A,HEXTBL(A)
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,(L)
LSH A,-10
ADDI S,(A) ;Check sum
ANDI A,17
HRRZ A,HEXTBL(A)
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,(L)
ADDI S,(A) ;Check sum
LSH A,-4
ANDI A,17
HRRZ A,HEXTBL(A)
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,"0" ;LOAD ADDRESS LOW
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,"0" ;RECORD TYPE HIGH
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
HRRZI A,"1" ;RECORD TYPE LOW
AOJ S, ;Check sum
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
XORI S,-1 ;CK SUM HIGH
AOJ S,
HRRZI A,(S)
LSH A,-4
ANDI A,17
HRRZ A,HEXTBL(A)
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
ANDI S,17
HRRZ A,HEXTBL(S)
HRRZM A,1(Y)
AOBJN Y,.+2
PUSHJ P,OUTP
SETZM 1(Y)
AOBJN Y,.+1
PUSHJ P,OUTP
PUSHJ P,OUTP
RELEAS
EXIT
INP: HRRM X,IBUF+1
IN 11,
JRST SETX
STATO 11,20000
JRST 4,.
ERROR: OUTSTR [ASCIZ/?????/]
EXIT
OUTP: HRRM Y,OBUF+1
OUT
CAIA
JRST 4,.
HRRZ Y,OBUF+2
MOVNI Y,(Y)
HRLZI Y,(Y)
HRR Y,OBUF+1
POPJ P,
SETX: HRRZ X,IBUF+2
MOVNI X,(X)
HRLZI X,(X)
HRR X,IBUF+1
POPJ P,
HEXTBL: "0"
"1"
"2"
"3"
"4"
"5"
"6"
"7"
"8"
"9"
"A"
"B"
"C"
"D"
"E"
"F"
END STAR